package testjeu;


import java.util.ArrayList;
import org.newdawn.slick.AngelCodeFont;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;

/**
 * Gestionnaires de messages défilants
 * @author YoTsumi
 * @see Message
 */
public class Messages {
    
    private ArrayList<Message> messages = new ArrayList<Message>();
    private AngelCodeFont verdana32;
    private int decalageG=0;
    
    /**
     * Initialise de gestionnaire de messages, en instanciant la police Verdana32
     * @param decalageLeft Pr gérer le centrage du texte
     * @throws org.newdawn.slick.SlickException
     */
    public Messages(int decalageLeft) throws SlickException {
        verdana32=new AngelCodeFont("res/font/verdana32.fnt", "res/font/verdana32_00.tga");
        this.decalageG=decalageLeft;
    }
    
    /**
     * Ajoute un message défilant
     * @param texte     Texte à afficher
     * @param y         Coordonnée y de départ ( x étant centré )
     * @param duree     Durée durant laquelle le message doit être affichée ( en unité arbitraire )
     * @throws org.newdawn.slick.SlickException
     */
    public void ajouter(String texte, int y, int duree) throws SlickException {
        messages.add(new Message(texte, y, decalageG,  duree, verdana32));
    } 
    
    /**
     * Affiche tous les messages du gestionnaire
     * @param g     Le contexte graphique
     */
    public void dessiner(Graphics g) {
       for (int i=0;i<messages.size();i++) {
            Message mess = messages.get(i);
            mess.dessiner(g);
       } 
    }
    
    /**
     * Met à jour la position des messages, et les supprime si leur durée de vie est périmée
     * @param delta     Temps écoulé depuis la dernière update
     */
    public void update(int delta) {
       ArrayList<Message> removeMe = new ArrayList<Message>();
       for (int i=0;i<messages.size();i++) {
            Message mess = messages.get(i);
            if (mess.update(delta)) {
                removeMe.add(mess);
            }
       }     
       messages.removeAll(removeMe);
    }
    
    
    /**
     * Vide le gestionnaire de message
     */
    public void supprimerTous() {
        messages.clear();
        
    }
    
   
}